﻿using System.Data.Entity.ModelConfiguration;

namespace Delphi.Mimir.Data.Entities.Final.Mappings {
    public class ParameterMap : EntityTypeConfiguration<Parameter> {
        public ParameterMap() {
            /******************************************************************
            /* Table
            /*****************************************************************/
            ToTable("fin.eod_parameters");

            /******************************************************************
            /* Primary Key
            /*****************************************************************/
            HasKey(a => a.ParameterId);

            /******************************************************************
            /* Index
            /*****************************************************************/
            // None

            /******************************************************************
            /* Relationships
            /*****************************************************************/
            // None
            
            /******************************************************************
            /* Properties
            /*****************************************************************/
            Property(a => a.ParameterId)
                .IsRequired()
                .HasColumnName("prm_id");

            Property(a => a.Domain)
                .IsRequired()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_domain_desc");

            Property(a => a.Group)
                .IsRequired()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_group_desc");

            Property(a => a.Name)
                .IsRequired()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_desc");

            Property(a => a.InParm1)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_in_1");

            Property(a => a.InParm2)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_in_2");

            Property(a => a.InParm3)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_in_3");

            Property(a => a.OutParm1)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_out_1");

            Property(a => a.OutParm2)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_out_2");

            Property(a => a.OutParm3)
                .IsOptional()
                .IsUnicode(false)
                .HasMaxLength(250)
                .HasColumnName("prm_out_3"); 
        }
    }
}
